
import jenkins.model.*;
import hudson.model.*;

/**
 * 在保留指定数量的最新构建前提下，清理所有非运行中job的构建记录
 * */
//删除构建记录时保留指定的条目
//参数：保留条数
int reservedItemsNum=5

//删除构建记录
println("开始执行构建记录清理...")
//内部变量：提示信息
String message=null
Jenkins.instance.getAllItems(Job.class).each {job ->
    job.getBuilds().eachWithIndex { item, i ->
        Run it=item;
        //运行中的构建不清理
        if(i >= reservedItemsNum && !it.isLogUpdated()){
            if(null==message){
                message="${job.fullName} 删除构建记录:${it.number}"
            }else{
                message+=",${it.number}"
            }
            it.delete()
        }
    }
    if(null!=message){
        println "${message}"
        message=null
    }
}
println("执行构建记录清理执行成功！")
return